package com.imcode.filedemo;

public class DiGuiDemo02 {

    public static void main(String[] args) {
        int r = f(5);
        System.out.println(r);
    }

    /**
     * 计算1 + 2 + 3 + ... + n 的和
     */
    public static int m(int n) {
        if (n == 0) {
            return 0;
        }
        return n + m(--n);
    }


    /**
     * 5！
     * 阶乘  5*4*3*2*1
     */

    public static int f(int n) {
        if (n == 1) {
            return 1;
        }
        return n * f(--n);
    }
}

/*
5
5 * f(4)
5 * 4 * f(3)
5 * 4 * 3 * f(2)
5 * 4 * 3 * 2 * f(1)
5 * 4 * 3 * 2 * 1

 */

/*
5

5 + m(4)
5 + 4 + m(3)
5 + 4 + 3 + m(2)
5 + 4 + 3 + 2 + m(1)
5 + 4 + 3 + 2 + 1 + m(0) 当m=0的时候 递归结束
5 + 4 + 3 + 2 + 1 + 0
*/